home *** CD-ROM | disk | FTP | other *** search
- *******************************************************
- ** XFD external decruncher for CP Cruncher **
- ** written by Mr. Larmer / Wanted Team **
- ** fixed by Georg Hörmannn in 1998 and SDI in 1999 **
- *******************************************************
-
- INCLUDE "AINCLUDE:IncDirs.i"
- INCLUDE "libraries/xfdmaster.i"
- INCLUDE "lvo/exec_lib.i"
-
- * head function for tests
- * INCLUDE "xfdExeHead.a"
-
- ; xfdForeman structure MUST be first thing in all external decrunchers
-
- ForeMan moveq #-1,d0 ;security
- rts
- dc.l XFDF_ID ;id
- dc.w 1 ;version
- dc.w 0
- dc.l 0,0 ;private
- dc.l S_4Vx ;first slave
-
- S_4Vx DC.L 0
- DC.W 2
- DC.W 36
- DC.L N_4Vx
- DC.W XFDPFF_DATA
- DC.W 0
- DC.L RB_4Vx
- DC.L DB_4Vx
- DC.L 0
- DC.L 0
- DC.W 0,0
- DC.L 12
-
- DC.B '$VER: 4Vx 1.2 (15.07.2001) by Psygore',0
- N_4Vx DC.B '(.4Vx) Cruncher',0
-
- EVEN
-
- RB_4Vx MOVEQ #0,D0
- TST.L 4(A0) * AmigaMail files
- BEQ.B .end
- CMPI.L #$12345678,(A0)
- BNE.B .end
- MOVEQ #1,D0
- .end RTS
-
- DB_4Vx MOVEM.L D1-D7/A1-A6,-(A7)
- MOVEA.L A0,A5
- MOVEA.L xfdbi_SourceBuffer(A5),A0
- ADDA.L xfdbi_SourceBufLen(A5),A0
- MOVE.L -4(A0),D0
- MOVE.L D0,xfdbi_TargetBufSaveLen(A5)
- MOVE.L D0,xfdbi_TargetBufLen(A5)
- MOVEA.L xfdm_ExecBase(A6),A6
- MOVE.L xfdbi_TargetBufMemType(A5),D1
- JSR _LVOAllocMem(A6)
- MOVE.W #XFDERR_NOMEMORY,xfdbi_Error(A5)
- MOVE.L D0,xfdbi_TargetBuffer(A5)
- BEQ.B .err
- MOVEA.L xfdbi_SourceBuffer(A5),A0
- MOVEA.L D0,A1
- MOVE.L xfdbi_SourceBufLen(A5),D0
- BSR.B D_4Vx
- CLR.W xfdbi_Error(A5)
- MOVEQ #1,D0
- .err MOVEM.L (A7)+,D1-D7/A1-A6
- RTS
-
- D_4Vx ADDA.L D0,A0
- MOVEA.L -(A0),A2
- ADDA.L A1,A2
- SUBQ.L #4,A0
- MOVE.L -(A0),D0
- L_100 MOVEQ #2,D1
- BSR.W L_1D4
- TST.W D2
- BEQ.B L_14C
- CMPI.W #7,D2
- BNE.B L_134
- LSR.L #1,D0
- BNE.B L_118
- BSR.W L_1CE
- L_118 BCC.B L_12C
- MOVEQ #9,D1
- BSR.W L_1D4
- TST.W D2
- BNE.B L_134
- MOVEQ #$0011,D1
- BSR.W L_1D4
- BRA.B L_134
- L_12C MOVEQ #3,D1
- BSR.W L_1D4
- ADDQ.W #7,D2
- L_134 SUBQ.W #1,D2
- L_136 MOVEQ #7,D1
- L_138 LSR.L #1,D0
- BNE.B L_140
- MOVE.L -(A0),D0
- ROXR.L #1,D0
- L_140 ADDX D3,D3
- DBRA D1,L_138
- MOVE.B D3,-(A2)
- DBRA D2,L_136
- L_14C CMPA.L A2,A1
- BGE.B L_1CC
- MOVEQ #1,D1
- BSR.W L_1D4
- MOVEQ #2,D3
- MOVEQ #7,D1
- TST.W D2
- BEQ.B L_1BA
- MOVEQ #4,D3
- CMPI.W #2,D2
- BEQ.B L_1A4
- MOVEQ #3,D3
- CMPI.W #1,D2
- BEQ.B L_196
- MOVEQ #1,D1
- BSR.B L_1D4
- CMPI.W #3,D2
- BEQ.B L_18E
- CMPI.W #2,D2
- BEQ.B L_184
- ADDQ.W #5,D2
- MOVE.W D2,D3
- BRA.B L_1A4
- L_184 MOVEQ #1,D1
- BSR.B L_1D4
- ADDQ.W #7,D2
- MOVE.W D2,D3
- BRA.B L_1A4
- L_18E MOVEQ #7,D1
- BSR.B L_1D4
- MOVE.W D2,D3
- BRA.B L_1A4
- L_196 MOVEQ #7,D1
- LSR.L #1,D0
- BNE.B L_19E
- BSR.B L_1CE
- L_19E BCS.B L_1BA
- MOVEQ #$000D,D1
- BRA.B L_1BA
- L_1A4 MOVEQ #$000F,D1
- LSR.L #1,D0
- BNE.B L_1AC
- BSR.B L_1CE
- L_1AC BCC.B L_1BA
- MOVEQ #7,D1
- LSR.L #1,D0
- BNE.B L_1B6
- BSR.B L_1CE
- L_1B6 BCS.B L_1BA
- MOVEQ #$000B,D1
- L_1BA BSR.B L_1D4
- SUBQ.W #1,D3
- L_1BE MOVE.B -1(A2,D2.L),-(A2)
- DBRA D3,L_1BE
- CMPA.L A2,A1
- BLT.W L_100
- L_1CC RTS
- L_1CE MOVE.L -(A0),D0
- ROXR.L #1,D0
- RTS
- L_1D4 MOVEQ #0,D2
- L_1D6 LSR.L #1,D0
- BNE.B L_1DE
- MOVE.L -(A0),D0
- ROXR.L #1,D0
- L_1DE ADDX D2,D2
- DBRA D1,L_1D6
- RTS
-